package request

import (
	"loghub/model"
	"time"
)

// LogDetailRequest 是http请求或者ws请求的json参数, 日志详情
type LogDetailRequest struct {
	// 项目id
	ProjectID string `json:"ProjectID"`
	// 日志详情
	LogDetailData *model.LogDetailData `json:"LogDetailData"`
}

// LogTraceRequest 是http请求或者ws请求的json参数, trace日志
type LogTraceRequest struct {
	// 项目id
	ProjectID string `json:"ProjectID"`
	// 链路日志
	// 当前调用链路的步骤记录id
	RPCTraceID string `json:"RpcTraceID"`
	// 当前链路上下文的唯一ID
	TraceID string `json:"TraceID"`
	// 日志标题, 比如错误日志的一段描述文字, 索引越界, 空指针错误, 除数不能为0等等
	LogTitle string `json:"LogTitle"`
	// 日志内容, 可以是结构体类型的指针, 因为链路追踪日志包含大量数据
	LogContent string `json:"LogContent"`
	// 堆栈信息, 比如java和C#的异常堆栈
	StackTrace string `json:"StackTrace"`
	// 错误类型, 比如C#的 System.IO.IOException, System.IndexOutOfRangeException 等
	ErrorType string `json:"ErrorType"`
	// 程序集名称, 比如 ilspy.exe dotnet.dll 等等
	AssemblyName string `json:"AssemblyName"`
	// 进程名称 比如 rqlited.exe rqlited 等等
	ProcessName string `json:"ProcessName"`
	// 进程id
	ProcessID int `json:"ProcessID"`
	// 包名,命名空间
	PackageName string `json:"PackageName"`
	// 方法名, 函数名称
	FunctionName string `json:"FunctionName"`
	// 当前机器的ip地址, 可以是内网ip
	ClientIP string `json:"ClientIP"`
	// 操作系统名称, windows10, ubuntu 等等
	OSName string `json:"OSName"`
	// 描述内容
	Remark string `json:"Remark"`
	// 创建时间
	CreateTime time.Time `json:"CreateTime"`
}

// WsRequestData 是websocket请求参数
type WsRequestData struct {
	// 请求路由
	Path string `json:"Path"`
	// 请求数据
	Data interface{} `json:"Data"`
}
